﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Ahi.Entity;
using Ahi.Config;
using MongoDB.Bson;
using DevExpress.XtraEditors.Repository;
using Ahi.Controller;
using Ahi.Entity.Interfaces;
using Ahi.Raporlama;

namespace Ahi.KomisyonEtkinlik
{
    public partial class KomisyonListesiForm : Base.BaseForm
    {
        List<KomisyonEntity> coll = new List<KomisyonEntity>();
        List<Entity.EtkinlikEntity> etkinlikler = new List<EtkinlikEntity>();

        public KomisyonEntity CurrentKomisyon
        {
            get
            {
                if (bsKomisyon.Current is KomisyonEntity)
                    return bsKomisyon.Current as KomisyonEntity;
                return null;
            }
        }

        public EtkinlikEntity CurrentEtkinlik
        {
            get
            {
                if (bsEtkinlik.Current is EtkinlikEntity)
                    return bsEtkinlik.Current as EtkinlikEntity;
                return null;
            }
        }

        public KomisyonListesiForm()
        {
            InitializeComponent();
        }

        public override void Hazirla()
        {
            repositoryItemLookUpUye.SetDataSource("AdSoyad", "Id", MongoAdaptor.Instance.GetData<UyeEntity>());
            repositoryItemLookUpDurum.SetEnumList<Entity.Enums.EtkinlikDurumu>();
            //repositoryItemLookUpFaaliyetTipi.SetEnumList<Entity.Enums.EtkinlikTipleri>();
        }

        public override void Yukle()
        {
            Listele();
        }

        private void Listele()
        {
            coll = MongoAdaptor.Instance.GetData<KomisyonEntity>();
            bsKomisyon.DataSource = coll;
        }

        public override void Kaydet()
        {
            MongoAdaptor.Instance.Save<KomisyonEntity>(coll);
        }

        private void buttonKaydet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Kaydet();
        }

        private void buttonListele_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Listele();
        }

        private void buttonExceleAktar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ExceleAktar();
        }

        private void ExceleAktar()
        {
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "Excel Dosyaları (*.xls)|*.xls";
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                gridViewKomisyon.ExportToXls(dlg.FileName, true);
            }
        }

        private void buttonYazdir_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Yazdir();
        }

        private void Yazdir()
        {
            RaporEntity rapor = null;
            if (RaporSecimForm.ShowRaporSecim(ref rapor, AppConfig.Current.KomisyonRaporu) == System.Windows.Forms.DialogResult.OK)
            {
                if (rapor.Id == ObjectId.Empty)
                    gridKomisyon.ShowPrintPreview();
                else
                {
                    AppConfig.Current.KomisyonRaporu = rapor.Id;
                    AppConfig.Current.SaveToDatabase();

                    Raporlama.RaporGoruntuleyiciForm frm = new Raporlama.RaporGoruntuleyiciForm();
                    frm.Id = AppConfig.Current.KomisyonRaporu;
                    if (rapor.KayitGosterimSekli == Entity.Enums.KayitGosterimSekli.Tekil)
                        frm.DataSource = CurrentKomisyon;
                    else
                        frm.DataSource = bsUyeler.DataSource;
                    frm.Show();
                }
            }
        }

        private void buttonKapat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Close();
        }

        private void bsKomisyon_CurrentChanged(object sender, EventArgs e)
        {
            if (CurrentKomisyon != null)
            {
                etkinlikler = MongoAdaptor.Instance.GetDataByField<EtkinlikEntity>("KomisyonId", CurrentKomisyon.Id);
            }
            else
            {
                etkinlikler = new List<EtkinlikEntity>();
            }
            bsEtkinlik.DataSource = etkinlikler;
        }

        private void gridViewEtkinlikler_DoubleClick(object sender, EventArgs e)
        {
            if (CurrentEtkinlik == null) return;

            EtkinlikEditForm frm = new EtkinlikEditForm();
            frm.Id = CurrentEtkinlik.Id;
            frm.ShowDialog();
        }

        private void gridKomisyonUye_EmbeddedNavigator_ButtonClick(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
        {
            Hazirla();
        }
    }
}
